package model;

import java.io.Serializable;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;



/**
 * De Meetstation class is een java Bean die alleen getters en setters heeft.
 * Het meetstation wordt gebruikt om de gegevens uit de meetstation tabel om te zetten
 * naar een Java Object (Meetstation).
 * 
 * @author Tom Regelink
 */
public class Meetstation implements Serializable{


	private static final long serialVersionUID = 1L;
	private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
	private int station_id 			= 0;
	private String plaats 			= "";
	private String positie 			= "";
	private double terreinHoogte 	= 0;
	private String omgeving 		= "";
	private String grondsoort 		= "";
	private double baroHoogte 		= 0;
	private double windHoogte 		= 0;
	
	
	/**
	 * Default constructor
	 * 
	 * @param id
	 * @param dePlaats
	 * @param pos
	 * @param terrein
	 * @param deOmgeving
	 * @param grond
	 * @param baro
	 * @param wind
	 */
	public Meetstation( int id, String dePlaats, String pos, double terrein, 
			String deOmgeving, String grond, double baro, double wind) 
	{
		station_id 		=  id;
		plaats 			=  dePlaats;
		positie 		=  pos;
		terreinHoogte 	=  terrein;
		omgeving 		=  deOmgeving;
		grondsoort 		=  grond;
		baroHoogte 		=  baro;
		windHoogte 		=  wind;
	}
	
	/**
	 * Geeft het station_id terug
	 * @return
	 */
	public int getStationID() {
		return station_id;
	}
	
	/**
	 * Geef het station_id op
	 * @param id
	 */
	public void setStationID( int id ){
		station_id = id;
	}
	
	/**
	 * Vraag de plaasts van het meetstation op
	 * @return
	 */
	public String getPlaats() {
		return plaats;
	}
	
	/**
	 * Geef de plaats van het station op
	 * @param dePlaats
	 */
	public void setPlaats( String dePlaats ){
		String oudePlaats = this.plaats;
		plaats = dePlaats;
		changeSupport.firePropertyChange("plaats", oudePlaats, plaats );
	}
	
	/**
	 * Vraag de positie van het station op
	 * @return
	 */
	public String getPositie() {
		return positie;
	}
	
	/**
	 * Stel de positie van het station in
	 * @param pos
	 */
	public void setPositie( String pos ) {
		String oudePositie = positie;
		positie = pos;
		changeSupport.firePropertyChange("positie", oudePositie, positie);
	}
	
	/**
	 * Geef de terreinhoogte van het station terug
	 * @return
	 */
	public double getTerreinHoogte() {
		return terreinHoogte;
	}
	
	/**
	 * Stel de terreinhoogte van het station in
	 * @param hoogte
	 */
	public void setTerreinHoogte( double hoogte ) {
		double oudeHoogte = hoogte;
		terreinHoogte = hoogte;
		changeSupport.firePropertyChange("terreinHoogte", oudeHoogte, terreinHoogte);
	}
	
	/**
	 * Vraag de omgeving van het station op
	 * @return
	 */
	public String getOmgeving() {
		return omgeving;
	}
	
	/*
	 * Stel de omgeving in
	 */
	public void setOmgeving( String deOmgeving ) {
		String oudeOmgeving = omgeving;
		omgeving = deOmgeving;
		changeSupport.firePropertyChange("omgeving", oudeOmgeving, omgeving);
	}
	
	public String getGrondsoort() {
		return grondsoort;
	}
	public void setGrondsoort( String soort ) {
		String oudeSoort = soort;
		grondsoort = soort;
		changeSupport.firePropertyChange("soort", oudeSoort, soort);
	}
	
	public double getBaroHoogte() {
		return baroHoogte;
	}
	public void setBaroHoogte( double hoogte ) {
		double oudeHoogte = hoogte;
		baroHoogte = hoogte;
		changeSupport.firePropertyChange("baroHoogte", oudeHoogte, baroHoogte);
	}
	
	public double getWindHoogte() {
		return windHoogte;
	}
	public void setWindHoogte( double hoogte ) {
		double oudeHoogte = windHoogte;
		windHoogte = hoogte;
		changeSupport.firePropertyChange("windHoogte", oudeHoogte, windHoogte);
	}

	
	
	/* PropertyChangeListener */

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
}
